Many simple request hashing schemes hash a request Uniform Resource Identifier (URI) including its parameters. For example, web caches may identify cached resources through hashing request URIs. However, hashing request URIs (including their parameters) may result in different hashes for what are semantically the same URI. For example, consider the following search API: https://api.example.com/search?q=<querystring>&limit=<n>&start=<n>. This URI has three parameters (name/value pairs): q, limit, and start. The order of these three parameters is not significant. Thus, the URI https://api.example.com/search?q=<querystring>&limit=<n>&start=<n> is semantically the same as the URI https://api.example.com/search?q=<querystring>&start=<n>&limit=<n>. That is, these two URIs are essentially the same content request and result in the same content response. However, hashing these two URIs will produce two different hashes. In the case of a web cache, the web cache may needlessly store two copies of the same response for these two different URIs.